function [QW_Mat,Moment_Mat]=DistApp_QW_QWCoef2CentMoment(QQ_Unit,CentMomOrderTable,Coef_Mat,Mean_Mat)
Num_QQ  =   size(QQ_Unit,1);
Num_Multi=  size(Coef_Mat,2);
Num_Moment= size(CentMomOrderTable,1)+2;
QW_Mat  =   zeros(Num_QQ,Num_Multi);
Moment_Mat= zeros(Num_Moment,Num_Multi);
CentMoment_Mat=zeros(Num_Moment-2,Num_Multi);
for i=1:Num_Multi
    Mean_temp    =   fsolve(@(Mean)Coef2QW_Unit_Temp(QQ_Unit,...
                                                     CentMomOrderTable,...
                                                     Mean,Coef_Mat(:,i)),...
                            Mean_Mat(:,i));
    [~,QW_Mat(:,i),CentMoment_Mat(:,i),~]=Coef2QW_Unit_Temp(QQ_Unit,CentMomOrderTable,Mean_temp,Coef_Mat(:,i));
    Moment_Mat(:,i)=    [Mean_temp;CentMoment_Mat(:,i)];
end

return
function [Mean_Diff,QW,CentMoment,Coef0]=Coef2QW_Unit_Temp(QQ,CentMomOrderTable,Mean,Coef)

QQ_Dim          =   size(QQ,2);
QQ_Num          =   size(QQ,1);

CentMoment_Num  =   size(CentMomOrderTable,1);

MaxOrder        =   max(max(CentMomOrderTable));
UnitCentMoment  =   zeros(QQ_Num,MaxOrder+1,QQ_Dim);
CentQQ          =   bsxfun(@minus,QQ,Mean');
for i=1:QQ_Dim
    UnitCentMoment(:,:,i)   =   bsxfun(@power,CentQQ(:,i),(0:MaxOrder));
end

CentMomentTable =   ones(QQ_Num,CentMoment_Num);
for i=1:CentMoment_Num
    for j=1:QQ_Dim
        Order_Temp      =   CentMomOrderTable(i,j)+1;
        CentMomentTable(:,i) ...
                        =   CentMomentTable(:,i).* ...
                            UnitCentMoment(:,Order_Temp,j);
    end
end
TempPolyTerm    =   [CentQQ,CentMomentTable];
QW              =   exp(TempPolyTerm*Coef);
Coef0           =   1/sum(QW);
QW              =   Coef0*QW;

CentMoment      =   CentMomentTable'*QW;
Mean_New        =   QQ'*QW;
Mean_Diff       =   Mean_New-Mean;
return